package com.zzl.myblog.Utils;

import androidx.fragment.app.Fragment;

import com.zzl.myblog.View.Fragment.LeadFragment;
import java.util.HashMap;
import java.util.Map;

/**
 * 碎片工厂类
 *  - 用于 TagsFragment.java 中生成可复用的fragment实例
 */
public class FragmentFactoryUtil {

    /*
     * 根据所传递的 index ， 来生成对应的碎片
     */
    // 知识体系
    public static final int TAB_TREE = 0;
    // 拓维导航
    public static final int TAB_NAVIGATION = 1;

    // Map保存碎片信息，以便复用，防止重复加载资源
    private static Map<Integer, Fragment> FragmentsMap = new HashMap<>();

    // 创建/提取 fragment 对象
    public static Fragment initFragment(int index,String username){
        Fragment fragment = FragmentsMap.get(index);//导向碎片中的碎片(以int类型区分)
        if(fragment == null){ // 未创建,创建新的 Fragment
            switch (index){
                case TAB_TREE:
                    fragment = LeadFragment.newInstance("tree",username); //知识体系Fragment
                    break;
                case TAB_NAVIGATION:
                    fragment = LeadFragment.newInstance("navigation",username); //拓维导航Fragment
                    break;
                default:
                    break;
                    //fragment = ProjectCategoryFragment.newInstance(index,username);//根据 项目分类CID 来创建fragment
            }
            // 将创建好的fragment存起来,之后拿的时候，直接取
            FragmentsMap.put(index,fragment);
        }
        return fragment; // 已创建，返回创建好的
    }
}
